function ajax(method, url, params) {
    function objToSearchString(obj) {
        let str = ''
        for (const key in obj) {
            str += `${key}=${obj[key]}&`
        }
        return str.slice(0, str.length - 1)
    }
    return new Promise((resolve, reject) => {
        let xhr = new XMLHttpRequest()
        xhr.open(method, method == 'get' ? url + '?' + objToSearchString(params) : url)
        xhr.onreadystatechange = () => {
            if (xhr.readyState == 4) {
                resolve(JSON.parse(xhr.responseText))
            }
        }
        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
        xhr.send(method == 'get' ? null : objToSearchString(params))
    })
}